/*
完全背包理论基础
2022-10-26

question:
	有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]，得到的价值是value[i] 。每件物品都有无限个（也就是可以放入背包多次），求解将哪些物品装入背包里物品价值总和最大。

answer:
	完全背包和01背包问题唯一不同的地方就是，每种物品有无限件。
	01背包和完全背包唯一不同就是体现在遍历顺序上，所以本文就不去做动规五部曲了，我们直接针对遍历顺序经行分析！
*/

// 01背包内嵌的循环是从大到小遍历，为了保证每个物品仅被添加一次。
for i := 0; i < len(weight); i++ { // 遍历物品
	for j := bagWeight; j >= weight[i]; j-- { // 遍历背包容量
		dp[j] = max(dp[j], dp[j-weight[i]]+value[i])
	}
}

// 完全背包的物品是可以添加多次的，所以要从小到大去遍历，即：
// 先遍历物品，再遍历背包
for i := 0; i < len(weight); i++ { // 遍历物品
    for j := weight[i]; j <= bagWeight ; j++ { // 遍历背包容量
        dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);

    }